]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
13 months agoci: Start with a fresh build dir to ensure test dependencies are correct
Marco Trevisan (Treviño) [Thu, 11 Sep 2025 11:33:42 +0000 (13:33 +0200)]
ci: Start with a fresh build dir to ensure test dependencies are correct

We want to ensure that meson test just works, without having to redo the
whole dependencies setup phase, so let's just start a new fresh build dir
and run tests there

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3869>

13 months agoextensions-app: Add test dependency on generated desktop file
Marco Trevisan (Treviño) [Thu, 11 Sep 2025 12:12:02 +0000 (14:12 +0200)]
extensions-app: Add test dependency on generated desktop file

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3869>

13 months agobuild: Define test dependencies
Marco Trevisan (Treviño) [Thu, 11 Sep 2025 11:29:31 +0000 (13:29 +0200)]
build: Define test dependencies

Ideally meson tests should just work without any pre-requisite build,
instead, we only need a configured build folder to work, but this does
not go as expected in gnome shell at the moment.

Since tests require generated files and compiled typelibs they don't
depend on, so just using `meson test -C build <test-name>` does not work
as expected.

So add test dependencies on test cases. We do not need to have per-test
dependencies right now since most of them share just the same
requirements, and this makes it easier to maintain

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3869>

13 months agobuild: Handle data as first subdir
Marco Trevisan (Treviño) [Thu, 11 Sep 2025 11:27:35 +0000 (13:27 +0200)]
build: Handle data as first subdir

We generate resources and files that may be required in next stages, so
lets do it as first thing

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3869>

13 months agoci: Include latest malcontent in the toolbox
Ignacy Kuchciński [Thu, 11 Sep 2025 13:37:06 +0000 (15:37 +0200)]
ci: Include latest malcontent in the toolbox

Currently the toolbox lacks malcontent >= 0.14.0, because that version
has not been released yet. However, we need it to test the upcoming
parental controls integration, so build it in the toolbox.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3870>

13 months agosearch: Make overview application search results grid RTL aware
Khalid Abu Shawarib [Mon, 25 Aug 2025 18:08:54 +0000 (21:08 +0300)]
search: Make overview application search results grid RTL aware

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3851>

13 months agosearch: Use a variable for tracking allocated width
Khalid Abu Shawarib [Tue, 2 Sep 2025 22:21:00 +0000 (01:21 +0300)]
search: Use a variable for tracking allocated width

Instead of the x coordinates of the allocation box.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3851>

13 months agobuild: Depend on gjs 1.85.90
Marco Trevisan (Treviño) [Tue, 12 Aug 2025 01:45:19 +0000 (03:45 +0200)]
build: Depend on gjs 1.85.90

While the actual version that was ported to libgirepository-2.0 was
1.85.2, we also rely on Gio wrappers that are part of gjs 1.85.90

See: https://gitlab.gnome.org/GNOME/gjs/-/blob/master/NEWS
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3836>

13 months agoci: Update mutter image
Florian Müllner [Thu, 11 Sep 2025 00:18:19 +0000 (02:18 +0200)]
ci: Update mutter image

The mutter image has been rebased to F43, pick it up.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3868>

13 months agopo/ml: Fix wrong calendar date formats
Pranav Jerry [Sun, 31 Aug 2025 14:09:02 +0000 (19:39 +0530)]
po/ml: Fix wrong calendar date formats

Closes: https://gitlab.gnome.org/Teams/Translation/ml/-/issues/1
Signed-off-by: Mohammed Sadiq <sadiq@sadiqpk.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3856>

13 months agoci: Include glib-networking in JS image
Florian Müllner [Wed, 10 Sep 2025 17:32:33 +0000 (19:32 +0200)]
ci: Include glib-networking in JS image

It provides TLS support, which is needed by the
`gnome-extensions upload` to publish an extension
archive to the website.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3867>

13 months agoci: Update js tooling image to F43
Florian Müllner [Wed, 10 Sep 2025 14:13:54 +0000 (16:13 +0200)]
ci: Update js tooling image to F43

F43 has been branched from rawhide and now contains the current .rc,
so it's a good moment to rebase the CI image.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3866>

13 months agoUpdated Spanish translation
Daniel Mustieles [Wed, 10 Sep 2025 10:03:57 +0000 (12:03 +0200)]
Updated Spanish translation

13 months agobrightnessManager: Handle absence of brightness control in _sync
Sebastian Wick [Mon, 8 Sep 2025 11:19:21 +0000 (13:19 +0200)]
brightnessManager: Handle absence of brightness control in _sync

We already call _sync in response to dimming changes, which might happen
no matter if we actually do have control over the brightness.

Let's just embrace _sync getting called in any situation and handle that
state gracefully by simply returning early. If we re-gain control, _sync
will be called again and the updated state becomes active.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8648
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3864>

13 months agoUpdate Dutch translation
Nathan Follens [Tue, 9 Sep 2025 21:53:18 +0000 (21:53 +0000)]
Update Dutch translation

13 months agost/button: Fix toggle-button with keyboard input
Alessandro Astone [Tue, 9 Sep 2025 12:34:14 +0000 (14:34 +0200)]
st/button: Fix toggle-button with keyboard input

An St.Button with toggle-mode ON would not update the toggle state when
invoked via keyboard input.

Fixes: dd694bf1a ("st/button: Use ClutterClickGesture instead of own button-press tracking")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3865>

13 months agoUpdate Danish translation
Ask Hjorth Larsen [Mon, 8 Sep 2025 23:21:19 +0000 (23:21 +0000)]
Update Danish translation

13 months agoUpdate Interlingua translation
Emilio Sepúlveda [Mon, 8 Sep 2025 17:27:18 +0000 (17:27 +0000)]
Update Interlingua translation

13 months agoUpdate Turkish translation
Sabri Ünal [Mon, 8 Sep 2025 17:00:20 +0000 (17:00 +0000)]
Update Turkish translation

14 months agoUpdate Korean translation
Changwoo Ryu [Sun, 7 Sep 2025 04:48:24 +0000 (04:48 +0000)]
Update Korean translation

14 months agoUpdate Swedish translation
Anders Jonsson [Sat, 6 Sep 2025 09:53:35 +0000 (09:53 +0000)]
Update Swedish translation

14 months agoUpdate Basque translation
Asier Saratsua Garmendia [Sat, 6 Sep 2025 07:47:57 +0000 (07:47 +0000)]
Update Basque translation

14 months agopopupMenu: Queue relayout on popup menu parent when opening
Jonas Ådahl [Fri, 5 Sep 2025 13:53:52 +0000 (15:53 +0200)]
popupMenu: Queue relayout on popup menu parent when opening

The position of the menu depends on the position of the "source actor",
but the source actor is not a parent of the menu, but typically a
sibling.

Since we depend on the source actor position for placing the popup menu,
it's important that the source actor gets allocated before we allocate.
Currently the only way to ensure that the source actor is allocated
before the popup menu is by handling the layout via the parent actor, as
the order of the allocations done when queuing shallow relayouts is
currently undefined. As of d94638acae ("clutter/actor: Make child
position changes a noop when possible") in mutter,
Clutter.Actor.set_child_above_sibling() has a fast path when the
position doesn't change, which means the parent was did not get its
relayout queued. This caused the popup menu to end up being allocated
before the source actor, thus using an out of date source actor
allocation to base its position calculation on.

To fix this, queue a relayout on the parent actor unconditionally, after
inserting it into the parent actor, to let us be able to rely on the
source actor having been allocated before the popup menu itself getting
allocated.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/4253
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3863>

14 months agolayout: Give dummy cursor actor a name
Jonas Ådahl [Fri, 5 Sep 2025 13:53:18 +0000 (15:53 +0200)]
layout: Give dummy cursor actor a name

Helps when introspecting the actor tree.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3863>

14 months agoUpdate Lithuanian translation
Aurimas Aurimas Černius [Fri, 5 Sep 2025 19:43:43 +0000 (19:43 +0000)]
Update Lithuanian translation

14 months agoUpdate Ukrainian translation
Yuri Chornoivan [Fri, 5 Sep 2025 19:10:13 +0000 (19:10 +0000)]
Update Ukrainian translation

14 months agoUpdated Spanish translation
Daniel Mustieles [Fri, 5 Sep 2025 12:05:27 +0000 (14:05 +0200)]
Updated Spanish translation

14 months agoUpdate Russian translation
Artur S0 [Thu, 4 Sep 2025 17:32:17 +0000 (17:32 +0000)]
Update Russian translation

14 months agoUpdate Persian translation
Danial Behzadi [Thu, 4 Sep 2025 13:10:10 +0000 (13:10 +0000)]
Update Persian translation

14 months agoUpdate Georgian translation
Ekaterine Papava [Thu, 4 Sep 2025 09:42:01 +0000 (09:42 +0000)]
Update Georgian translation

14 months agoUpdate Basque translation
Asier Saratsua Garmendia [Thu, 4 Sep 2025 08:43:24 +0000 (08:43 +0000)]
Update Basque translation

14 months agoUpdate Hungarian translation
Balázs Úr [Tue, 2 Sep 2025 12:09:04 +0000 (12:09 +0000)]
Update Hungarian translation

14 months agoUpdate British English translation
Bruce Cowan [Tue, 2 Sep 2025 09:56:37 +0000 (09:56 +0000)]
Update British English translation

14 months agoUpdate Brazilian Portuguese translation
Rafael Fontenelle [Mon, 1 Sep 2025 18:33:21 +0000 (18:33 +0000)]
Update Brazilian Portuguese translation

14 months agojs: Use DesktopAppInfo from GioUnix
Marco Trevisan (Treviño) [Sun, 31 Aug 2025 00:55:13 +0000 (02:55 +0200)]
js: Use DesktopAppInfo from GioUnix

The type was never part of Gio, but it's an Unix specific type, so use
the platform-specific typelib instead.

This would still work in gjs for 49 but would trigger a warning.

See: https://gitlab.gnome.org/GNOME/glib/-/issues/3744
See: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4761
See: https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/1018
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3855>

14 months agoUpdate Chinese (China) translation
luming zh [Mon, 1 Sep 2025 01:23:01 +0000 (01:23 +0000)]
Update Chinese (China) translation

14 months agoBump version to 49.rc
Florian Müllner [Sun, 31 Aug 2025 16:02:38 +0000 (18:02 +0200)]
Bump version to 49.rc

Update NEWS.

14 months agoUpdate Finnish translation
Jiri Grönroos [Sun, 31 Aug 2025 18:38:40 +0000 (18:38 +0000)]
Update Finnish translation

14 months agoUpdate Catalan translation
Jordi Mas [Sun, 31 Aug 2025 04:40:35 +0000 (06:40 +0200)]
Update Catalan translation

14 months agost/theme-context: Run dispose on theme nodes on theme context changes
Jonas Dreßler [Thu, 24 Jul 2025 16:27:29 +0000 (18:27 +0200)]
st/theme-context: Run dispose on theme nodes on theme context changes

When the theme context changes, we clear the theme cache and make the
widget tree throw away and create new theme nodes. That's because the
old theme nodes can no longer be used, they might be referencing old
CSS data, scale factors, or other things.

St itself should never reuse theme nodes after theme context changes,
but of course theme nodes are exposed to users of St, and they can
always keep a theme node around and call a method on it even after a
theme context change.

To avoid those outdated theme nodes accessing outdated pointers into
the Croco structures and causing crashes, force-run their `dispose()`
function when the theme context changes. This should ensure that all
problematic pointers in the theme nodes are cleared, and users of St
can't crash gnome-shell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3809>

14 months agost/theme-node: Free properties array on dispose rather than finalize
Jonas Dreßler [Thu, 24 Jul 2025 17:47:58 +0000 (19:47 +0200)]
st/theme-node: Free properties array on dispose rather than finalize

We're going to use `g_object_run_dispose()` on StThemeNode with the next
commit in order to manually clear the properties array and a few other
things when the StThemeContext changes.

That's because after theme context changes, the CSS properties will no
longer be valid, and accessing them will cause crashes. Even if St behaves
nicely and throws out all theme nodes on theme context changes, there
might still be users holding references to nodes, so we want to ensure that
the old nodes are harmless after theme context changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3809>

14 months agost/widget: Don't animate theme node updates on theme context changes
Jonas Dreßler [Thu, 24 Jul 2025 16:51:25 +0000 (18:51 +0200)]
st/widget: Don't animate theme node updates on theme context changes

With commit 4dfa39457e, I was assuming that emitting `::changed` on the
StThemeContext, triggering StWidgets recursive style-changed machinery,
is enough to get rid of all the theme nodes that are in use, ensuring
they're never accessed again after the `::changed` emission.

That assumption turned out to be wrong: `st_widget_recompute_style()`
animates updates of theme nodes using StThemeNodeTransition, and
StThemeNodeTransition keeps the old theme node around, accessing it at
various later points. This caused various crashes on extension
loading/unloading, because that triggers a theme context change, where
a StThemeNodeTransition would later access an outdated theme node,
pointing to CSS properties that are already freed.

That said, reverting 4dfa39457e doesn't seem like the best idea,
because other calls to `st_theme_context_changed()` also seem to make
the same (incorrect) assumption, eg. `st_theme_context_set_theme()`
seems like a good candidate for a similar crash.

Probably St just shouldn't try to animate on theme context changes: The
old theme nodes are no longer usable after those, but
StThemeNodeTransition expects them to be, so that's just a bad idea.

So change the style-changed machinery a bit to allow disabling transitions
and use that to avoid transitions on theme context changes.

Fixes: 4dfa39457e ("st/theme-context: Also remove theme nodes on stylesheet changes")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7339
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3809>

14 months agost/theme-node: Remove unused field
Daniel van Vugt [Thu, 17 Apr 2025 09:38:21 +0000 (17:38 +0800)]
st/theme-node: Remove unused field

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3809>

14 months agostatus/network: Update Wi-Fi quicksettings icon on disconnect
Mitchell Augustin [Fri, 15 Aug 2025 17:49:03 +0000 (12:49 -0500)]
status/network: Update Wi-Fi quicksettings icon on disconnect

Prior to this patch, upon a connected AP disconnecting from
the device, the current quicksettings wi-fi icon will continue
showing the "network-wireless-connected-symbolic" symbol in
the time between the initial disconnection and the adapter
deactivation, even though the connection has been
degraded by virtue of no longer being routable.

This will also happen in the
NM.ActiveConnectionState.DEACTIVATING state.

To make this clearer to the user, this change modifies
quicksettings' wifi icon to reflect the degraded states:
- An activated adapter with no active AP connection will
now map to the network-wireless-offline-symbolic icon
(to indicate that the AP signal is lost)

- NM.ActiveConnectionState.DEACTIVATING will now map to the
network-wireless-acquiring-symbolic icon (to indicate that
a state transition is in progress)

Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8605

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3840>

14 months agoUpdate Galician translation
Fran Diéguez [Sat, 30 Aug 2025 19:05:27 +0000 (19:05 +0000)]
Update Galician translation

14 months agoUpdate Hebrew translation
Yaron Shahrabani [Sat, 30 Aug 2025 05:19:30 +0000 (05:19 +0000)]
Update Hebrew translation

14 months agogdm/authPrompt: Preserve the text when switching entry visibility
Marco Trevisan (Treviño) [Mon, 25 Aug 2025 12:35:57 +0000 (14:35 +0200)]
gdm/authPrompt: Preserve the text when switching entry visibility

The text visibility of an auth prompt entry may change dynamically at
runtime, in particular when unlocking the screen with the blank screen
or with the screen shield visible this is happening:
 - The user starts typing the PAM credential (may be secret or not)
 - Under the hood the PAM conversation starts and actually asks user
   for input
 - The entry text is not cleared because we use what the user has typed
   so far as the preemptive secret.
 - The entry is adjusted to follow the requested PAM text visibility
   settings.
   -> This may lead to switching the actual text entry widget in use

Now, if the first entry that PAM requires is "ECHO ON", like it may
happen in the case in which a visible value is requested, we end up
"clearing" what the user as typed instead of preserving the value as
pre-filled value.

Causing the user typing something wrong instead.

To prevent this we need to restore both the text, the cursor position
and the selection bounds (in case the use pressed some key [binding])
leading to a position or selection change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>

14 months agogdm/authPrompt: Factorize the entry update code
Marco Trevisan (Treviño) [Tue, 26 Aug 2025 14:40:07 +0000 (16:40 +0200)]
gdm/authPrompt: Factorize the entry update code

Cleanup the code a bit to make future updates smaller

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>

14 months agogdm/authPrompt: Clear the inactive entry too
Marco Trevisan (Treviño) [Mon, 25 Aug 2025 12:29:55 +0000 (14:29 +0200)]
gdm/authPrompt: Clear the inactive entry too

In multi-factor authentication cases we may end up clearing the current
entry, but we are potentially leaving a previously filled inactive entry
as it is.

Avoid this, and clear all the entries we have when clearing the prompt.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>

14 months agogdm/authPrompt: Unset the entry reference on destruction
Marco Trevisan (Treviño) [Mon, 25 Aug 2025 12:25:49 +0000 (14:25 +0200)]
gdm/authPrompt: Unset the entry reference on destruction

We use the internal entry as the reference to the text entry that is
currently in use, but during destruction we do not unset it, thus the
garbage collector may requires further cycles to actually release it.

Simplify its job here, improves 572d011894c9b490b8a17ad7db6adec335fbb017

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>

14 months agoslider: Flip horizontal scroll coordinates in RTL languages
Carlos Garnacho [Mon, 18 Aug 2025 16:59:49 +0000 (18:59 +0200)]
slider: Flip horizontal scroll coordinates in RTL languages

In those languages, the horizontal axis still grows positively
towards the right, which means we need to invert left and right
as they come from scroll events, in order to have the expected
effect.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3842>

14 months agoslider: Merge scroll() method with vfunc
Carlos Garnacho [Mon, 18 Aug 2025 16:57:56 +0000 (18:57 +0200)]
slider: Merge scroll() method with vfunc

This method is no longer being poked outside the slider, so merge
it with the only place calling it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3842>

14 months agostatus/volume: Handle scroll events distinctly
Carlos Garnacho [Mon, 18 Aug 2025 16:55:32 +0000 (18:55 +0200)]
status/volume: Handle scroll events distinctly

Stop funneling the events to the (maybe hidden) volume
slider actor, and handle events directly at the volume
status icon.

This allows us to move it back to vertical motion, since
there are no cues to make us think scroll should be
horizontal here. The slider will still prefer horizontal
motion.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3842>

14 months agoslider: Add a step() method
Carlos Garnacho [Fri, 29 Aug 2025 21:36:32 +0000 (23:36 +0200)]
slider: Add a step() method

This method takes a (possibly fractional) number of scroll steps,
and converts it to the right amount to move the slider value.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3842>

14 months agostatus/system: Indicate "battery health" status
Florian Müllner [Tue, 17 Sep 2024 17:36:55 +0000 (19:36 +0200)]
status/system: Indicate "battery health" status

"Preserve battery health" is a new feature which limits battery
charging in order to increase battery longevity.

Currently when the charging limit is hit, the state is
indistinguishable from the unplugged, discharging state,
which isn't great: The user has no way to know whether
the limit was reached, or they accidentally unplugged
the device.

To address this, use dedicated icons in the plugged-in-
but-not-charging case.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5228
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3474>

14 months agostyle: Special case media buttons
Jakub Steiner [Wed, 20 Aug 2025 10:23:12 +0000 (12:23 +0200)]
style: Special case media buttons

- make media button semi-transparent too

See https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8599

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3838>

14 months agostyle: Use correct style class on lock screen
Florian Müllner [Wed, 13 Aug 2025 18:30:08 +0000 (20:30 +0200)]
style: Use correct style class on lock screen

Nothing uses the 'notification' style class anymore, actors based
on MessageList.Message (like MPRIS notifications) use 'message'.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8599
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3838>

14 months agost/private: Fix texture leak when creating shadow from actor
Sebastian Keller [Thu, 21 Aug 2025 17:45:21 +0000 (19:45 +0200)]
st/private: Fix texture leak when creating shadow from actor

cogl_pipeline_set_layer_texture() adds its own ref to the texture in
_cogl_pipeline_set_layer_texture_data() when called via
_st_create_shadow_pipeline(), so the initial reference is leaked when
the pointer is stolen.

Fix this by not stealing the pointer, so autoptr can unref the texture.
Before the code was changed to autoptr in 71accdd97 the texture was also
manually unrefed after calling _st_create_shadow_pipeline().

Fixes: 71accdd97 ("st: Adapt to CoglObject removal")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8509
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3854>

14 months agopanel: Update to Mutter API updates
Carlos Garnacho [Mon, 26 May 2025 15:25:45 +0000 (17:25 +0200)]
panel: Update to Mutter API updates

Fetch the Clutter.Sprite in order to drag windows.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3726>

14 months agodnd: Identify pointing focus through Clutter.Sprite
Carlos Garnacho [Mon, 26 May 2025 15:26:16 +0000 (17:26 +0200)]
dnd: Identify pointing focus through Clutter.Sprite

Move away from devices and sequences to identify these, and rely
on Clutter.Sprite.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3726>

14 months agopopupMenu: Use Clutter.Sprite for pointing focus identification
Carlos Garnacho [Mon, 26 May 2025 15:25:16 +0000 (17:25 +0200)]
popupMenu: Use Clutter.Sprite for pointing focus identification

Move away from devices and sequences for this.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3726>

14 months agoslider: Use Clutter.Sprite for pointing focus accounting
Carlos Garnacho [Mon, 26 May 2025 15:24:29 +0000 (17:24 +0200)]
slider: Use Clutter.Sprite for pointing focus accounting

Move away from devices and sequences for this identification.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3726>

14 months agowindowMenu: Use Clutter.Sprite for finding the pointer focus
Carlos Garnacho [Mon, 26 May 2025 15:23:30 +0000 (17:23 +0200)]
windowMenu: Use Clutter.Sprite for finding the pointer focus

Update to API updates in Mutter, by looking up the sprite and
using it in window drag API.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3726>

14 months agost: Make st_widget_sync_hover() based on crossing events
Carlos Garnacho [Fri, 23 May 2025 09:41:38 +0000 (11:41 +0200)]
st: Make st_widget_sync_hover() based on crossing events

Avoid pointer queries, and account for possibly multiple sprites
being in the same actor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3726>

14 months agogdm: Drop explicit calls to sync_hover()
Carlos Garnacho [Fri, 23 May 2025 09:12:20 +0000 (11:12 +0200)]
gdm: Drop explicit calls to sync_hover()

This was added in commit bfea41b771, together with some
manual hover/reactive state manipulation. The rest of the
calls went away, and crossing events came a long way since,
these explicit sync_hover() calls are not necessary anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3726>

14 months agost/focus-manager: Check for NULL instead of stage to exit loop
Jonas Dreßler [Fri, 1 Mar 2024 17:39:18 +0000 (18:39 +0100)]
st/focus-manager: Check for NULL instead of stage to exit loop

In st_focus_manager_stage_event() we get the current key-focus actor from
the stage, and then enter a loop where we iterate through parents until we
get to the stage. If the key-focus actor is not a descendent of the stage
for some reason, this loop will never exit and we've locked up.

We can easily prevent the endless loop by checking for NULL as the exit
condition instead of checking for the stage, so do that instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3220>

14 months agoswitcherPopup: Move to a ClutterGesture for closing the popup
Jonas Dreßler [Sun, 13 Jul 2025 10:01:10 +0000 (12:01 +0200)]
switcherPopup: Move to a ClutterGesture for closing the popup

When the user presses a mouse button outside of the switcherPopup, the
popup should close. This broke when we moved StButton to ClutterGesture,
because the button_press_event() handler in switcherPopup will close the
popup before the click gesture recognizes.

Since we're trying to move away from direct event handling anyway, port
this functionality to a LongPressGesture with a duration of 0, so that
the popup closes immediately on button press as it used to.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agost/scroll-bar: Port scroll bar scrolling to use ClutterGesture
Jonas Dreßler [Sat, 6 Aug 2022 12:46:50 +0000 (14:46 +0200)]
st/scroll-bar: Port scroll bar scrolling to use ClutterGesture

Avoid the troublesome event handling here and replace it with two
ClutterPanGestures, one for the trough and one for the handle.

This is a fairly non-intrusive port, there's room for a lot of
improvements, for example making the trough react to motion events too
should be fairly easy now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agost/scroll-bar: Use an StWidget for the handle rather than a button
Jonas Dreßler [Sat, 9 Aug 2025 17:40:54 +0000 (19:40 +0200)]
st/scroll-bar: Use an StWidget for the handle rather than a button

When we'll port the StScrollBar to use the new ClutterPanGesture, the
StButtons internal click gesture would interfere with the :active state of
the handle, because we set it in two places now: Here in StScrollBar, and in
StButton. Due to the order of gesture state changes when the scroll bar
handle pan gesture recognizes and cancels the button click gesture, the
active state will end up not being set during the actual pan.

To fix this, avoid using an StButton for the pan, and instead use a simple
StWidget.

While at it, change the CSS selector to be based on class name, not on ID.
IDs in CSS should be unique, and scroll bar handles are used more than once
in our UI.

Also, because apparently there's a Croco or St CSS parsing bug, select the
.vhandle/.hhandle class using the ">" child selector, as selecting just by
class doesn't do the trick :/

am

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoLeave cancelling conflicting gestures to Clutters machinery
Jonas Dreßler [Sun, 10 Apr 2022 22:32:06 +0000 (00:32 +0200)]
Leave cancelling conflicting gestures to Clutters machinery

Since everything is a gesture now in the appDisplay, ClutterGesture will
do all the cancelling of other gesture by itself now, we merely have to
describe the relationship between them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agodnd: Use ClutterGesture to start DnD interactions
Jonas Dreßler [Wed, 3 Aug 2022 13:01:52 +0000 (15:01 +0200)]
dnd: Use ClutterGesture to start DnD interactions

With the last commit we introduced ShellDndStartGesture, so now port the
Draggable to actually use that gesture, and to move over to a ClutterGrab
once the DndStartGesture has recognized.

This is shuffling a lot of things around and removing quite a bit of code.

One thing to note is that to allow users of the DndStart gesture to specify
its relationship with other gestures (eg. to allow it run together with a
LongPressGesture), the DndStartGesture is exposed on the draggable as
the startGesture property.

Also, restore the integration with WindowPreview gestures, so all of them
are able to cooperate. This used to be done via addClickAction() in the past,
we can now specify this interaction to ClutterGesture.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoAdd a ClutterGesture subclass for starting DND operations
Jonas Dreßler [Tue, 7 May 2024 17:07:06 +0000 (19:07 +0200)]
Add a ClutterGesture subclass for starting DND operations

Factor out the starting part of the DND operation from dnd.js and move it
into a new ClutterGesture subclass: ShellDndStartGesture

As with the previous port to ClutterGesture, this new gesture is written
in C due to performance concerns when we'll get rid of motion event
compression and start handling eg. 1000 HZ mouse events at the full rate.

This gesture now integrates with the ClutterGesture state tracking system
(giving us the benefit of coordinating with other gestures), and will
recognize (and also complete) as soon as a drag on a draggable actor should
start. As soon as that happens, the existing code in dnd.js takes over,
aquiring a (more exclusive) seat grab and handling things from there. This
porting of dnd.js will be done in the next commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agowindowPreview: Replace the click action with a click and long press gesture
Jonas Dreßler [Tue, 8 Jul 2025 14:58:25 +0000 (16:58 +0200)]
windowPreview: Replace the click action with a click and long press gesture

In the porting, temporarily stop integrating the WindowPreview gestures with
DnD, this used to be done through addClickAction() but DnD will change to
using gestures in later commits, making its porting moot. This integration
will be restored later on.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoedge-drag-gesture: Small improvements to gesture detection
Jonas Dreßler [Fri, 25 Jul 2025 10:31:36 +0000 (12:31 +0200)]
edge-drag-gesture: Small improvements to gesture detection

Just a few small improvements to the accuracy of detection that came up
while porting to ClutterGesture.

- Use a fixed CANCEL_THRESHOLD instead of comparing the moved distance to
the perpendicular direction distance. Comparing to the perpendicular
distance means the point is basically allowed to travel in a max 45 degree
angle from the screen edge. Our EDGE_THRESHOLD is quite small though (20),
so after the gesture begins to recognize, it's surprisingly easy to
unwillingly cancel the gesture (just needs to move 20 pixels in the
perpendicular direction). Instead simply go with a fixed threshold for
cancelling the gesture. This has the additional upside that we'll also
move the state to CANCELLED if the gesture didn't move to RECOGNIZING
beforehand, a behavior that ClutterGesture strongly encourages.

- Introduce a cancel timeout of 200 ms, so that the gesture is cancelled
if it point is still hovering at the monitor edge for a while. The timeout
should be fairly short, as this gesture can happen on top of an application
window, and the application can't use the event until the gesture has moved
to CANCELLED, so we don't want to keep the event to ourselves for too
long.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoPort the EdgeDragAction to ClutterGesture
Jonas Dreßler [Fri, 18 Mar 2022 15:25:38 +0000 (16:25 +0100)]
Port the EdgeDragAction to ClutterGesture

And since ClutterGestures will only be possible to implement in C (due to
performance concerns when we'll get rid of motion event compression and
start handling eg. 1000 HZ mouse events at the full rate), that means we
have to port the gesture to C!

It behaves mostly the same still: It's a single finger touch-only gesture
that recognizes as soon as a point that began on the monitor edge moves away
from that edge. It then emits "progress" signals with the distance from the
edge all the way until the fixed threshold distance (DRAG_DISTANCE) is
reached, where it then moves to COMPLETED.

There's definitely room for further improvements here, eg. the gesture
should probably only complete once the point is lifted from the screen.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoappDisplay: Remove action mode limitation for swipe tracker
Jonas Dreßler [Tue, 30 Apr 2024 15:50:20 +0000 (17:50 +0200)]
appDisplay: Remove action mode limitation for swipe tracker

Now that we no longer have the swipe tracker on the stage, but rather on
the actual actor that the gesture is happening on, we don't have to limit it
to specific ActionModes anymore, so remove that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoSet debug names for swipe tracker pan gestures
Jonas Dreßler [Thu, 31 Jul 2025 09:49:20 +0000 (11:49 +0200)]
Set debug names for swipe tracker pan gestures

Add a debug name param to swipe trackers to make gestures debugging
that sets the ClutterAction 'name' param of the pan gesture. This
should make debugging gestures easier when SwipeTrackers are involved.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoSet event phase to CAPTURE for swipe gestures starting in the session
Jonas Dreßler [Thu, 31 Jul 2025 09:43:57 +0000 (11:43 +0200)]
Set event phase to CAPTURE for swipe gestures starting in the session

When a swipe gesture can get triggered in the session (ie. on top of a
window, not just from the overview or other shell chrome), we want it to
receive events as soon as possible, as otherwise the clients will see
those events.

So use the CAPTURE phase for the overview gesture and the workspace
switching gesture, which makes sure the gesture sees each event before a
window gets to see it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoswipeTracker: Port to use ClutterPanGesture
Jonas Dreßler [Thu, 31 Jul 2025 09:42:26 +0000 (11:42 +0200)]
swipeTracker: Port to use ClutterPanGesture

The new ClutterGesture subclass ClutterPanGesture fits the SwipeTracker
quite well. API wise the biggest difference to the TouchSwipeGesture it
was using before is that ClutterPanGesture has its own internal event
history to keep track of deltas and to calculate a velocity in the end.
That means we need to give it slighty special treatment right now, but
we'll improve that with the next commits.

So replace the internal TouchSwipeGesture and make the SwipeTracker use
ClutterPanGesture directly.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agosearch: Use ClutterPanGesture for touchscreen scrolling
Jonas Dreßler [Fri, 8 Apr 2022 23:21:54 +0000 (01:21 +0200)]
search: Use ClutterPanGesture for touchscreen scrolling

ClutterPanGesture replaced ClutterPanAction and uses Clutters new
gesture tracker, let's switch to the shiny new thing.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agost/button: Use ClutterClickGesture instead of own button-press tracking
Jonas Dreßler [Sat, 31 Aug 2024 14:22:51 +0000 (16:22 +0200)]
st/button: Use ClutterClickGesture instead of own button-press tracking

Clutter has a gesture that can take care of this now, so get rid of all the
manual tracking of events let ClutterClickGesture handle it.

st_button_fake_release() is adapted to call clutter_gesture_cancel() until
everything is ported to ClutterGesture and Clutter will take care of this
automatically.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoappDisplay: Use LongPress and Click gestures for opening popup menu
Jonas Dreßler [Thu, 17 Mar 2022 20:34:52 +0000 (21:34 +0100)]
appDisplay: Use LongPress and Click gestures for opening popup menu

We now have ClutterGestures for this, so let's use them instead of listening
to events ourselves.

While at it, remove the custom 600ms long-press duration in favor of Clutters
default 500ms long-press-duration.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoReplace ClutterClickAction with new ClutterClickGesture
Jonas Dreßler [Tue, 8 Jul 2025 14:54:47 +0000 (16:54 +0200)]
Replace ClutterClickAction with new ClutterClickGesture

Nothing fancy either here, replace the old ClutterClickActions with the
new ClutterClickGesture.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agoReplace "long-press" of click action with ClutterLongPressGesture
Jonas Dreßler [Thu, 17 Mar 2022 16:08:33 +0000 (17:08 +0100)]
Replace "long-press" of click action with ClutterLongPressGesture

Nothing fancy here, just a straightforward replacement of one API with
another.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agounlockDialog: Move from TapAction to ClickGesture
Jonas Dreßler [Fri, 18 Mar 2022 13:24:26 +0000 (14:24 +0100)]
unlockDialog: Move from TapAction to ClickGesture

ClutterClickGesture is a new subclass of ClutterGesture and implements
the same functionality as the TapAction and ClutterClickAction did,
which is why those will get removed. So move to ClutterClickGesture here
for the tap gesture.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2853>

14 months agotimeLimitsManager: Fix a typo in a code comment
Philip Withnall [Thu, 28 Aug 2025 11:52:58 +0000 (12:52 +0100)]
timeLimitsManager: Fix a typo in a code comment

A ‘leap day’ is February 29th, and is not the same as a daylight savings
time transition day (when the clock goes forwards or backwards by an
hour).

Fix a thinko/typo in my code comment.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3853>

14 months agotray/na-tray-manager: Remove outdated comment and return value
Marco Trevisan (Treviño) [Wed, 1 May 2024 18:54:46 +0000 (20:54 +0200)]
tray/na-tray-manager: Remove outdated comment and return value

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agotray/na-xembed: Destroy socket window when ending the embedding
Marco Trevisan (Treviño) [Wed, 1 May 2024 03:56:48 +0000 (05:56 +0200)]
tray/na-xembed: Destroy socket window when ending the embedding

Currently when embedding a tray icon is ended we are leaving the X11
socket window around as we don't really destroy it, while we're just
listening for its child destruction.

So, when embedding is ending we need to make sure that:
 - If the plug window is still alive, move it back to its old parent
   (normally that's the root window, but we query for it, to be sure)
 - If the plug window has been already destroyed or reparented (by us or
   by something else), we've to just destroy the socket window

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7614
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agotray/na-xembed: Use proper indentation style header
Marco Trevisan (Treviño) [Wed, 1 May 2024 03:54:31 +0000 (05:54 +0200)]
tray/na-xembed: Use proper indentation style header

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agotray: Zero-initialize the event structures on initialization
Marco Trevisan (Treviño) [Wed, 1 May 2024 02:22:29 +0000 (04:22 +0200)]
tray: Zero-initialize the event structures on initialization

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agoshell-tray-icon: Trigger a relayout when the underneath xembeded size changes
Marco Trevisan (Treviño) [Wed, 1 May 2024 02:20:42 +0000 (04:20 +0200)]
shell-tray-icon: Trigger a relayout when the underneath xembeded size changes

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agoshell-tray: Ensure that only a child can be added
Marco Trevisan (Treviño) [Wed, 1 May 2024 02:19:34 +0000 (04:19 +0200)]
shell-tray: Ensure that only a child can be added

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agoshell-tray-icon: Use available space when that's defined
Marco Trevisan (Treviño) [Wed, 1 May 2024 02:18:50 +0000 (04:18 +0200)]
shell-tray-icon: Use available space when that's defined

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7613
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agotray/na-xembed: Use XShape to remove input on socket window
Marco Trevisan (Treviño) [Wed, 1 May 2024 20:34:58 +0000 (22:34 +0200)]
tray/na-xembed: Use XShape to remove input on socket window

We don't want this window to take any input as, a part from blocking the
events on the shell representation itself, they may potentially make the
plugged window to do anything with the event is processing (such as
showing tooltips). And we don't want this since we only want to send to
those windows only the synthetic events that we explicitly control.

This was already the case before of commit ab60902058 but a similar
approach was not replicated, leading to input events being fully
processed from tray icons plugs.

It requires adding an explicit build dependency on Xext, but this is
something that mutter already depends on so not really a new dependency

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7613
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agobuild: Add explicit dependency on Xfixes
Marco Trevisan (Treviño) [Wed, 1 May 2024 20:33:43 +0000 (22:33 +0200)]
build: Add explicit dependency on Xfixes

We use the xfixes extensions in tray icons but we rely on the dependency
brought to us from other libraries as mutter but let's make it explicit

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3818>

14 months agounlockDialog: Do not reset the auth prompt on every tap
Marco Trevisan (Treviño) [Mon, 25 Aug 2025 23:11:18 +0000 (01:11 +0200)]
unlockDialog: Do not reset the auth prompt on every tap

Currently we have a tap event tracker that causes that every time a tap
happens in the lock screen, we reset the auth prompt and this can be
particularly annoying at least in three cases:
 1. Just clicking everywhere in the screen may lead the unlock entry
    content to be cleared
 2. Clicking in the screen while an authentication is in progress,
    cancels it
 3. This may break a multi-factor authentication method, as a single
    click may lead previous steps to be cancelled

So, while resetting the auth prompt is important when we're about to
show it, it's not something we want to do while an authentication has
started.

As per this also do not touch the auth prompt sensitivity unless we're
in an idle phase, or we may end up overriding the auth prompt state,
leading for example to a text entry being editable while we're verifying
the secret

Fixes: 37e55df29865dac13656116efdd7abec8056dea9
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3852>

14 months agoibusCandidatePopup: Fix scaling set-cursor-location-relative signal handling
Takao Fujiwara [Wed, 27 Aug 2025 09:00:30 +0000 (18:00 +0900)]
ibusCandidatePopup: Fix scaling set-cursor-location-relative signal handling

Need to convert the raw coordinates to the scaled ones in gnome-shell.
IBus GtkIMModule can calculate the relative coordinates and gnome-shell
needs to provide the actual scale.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8424
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3729>

14 months agoUpdate Polish translation
Piotr Drąg [Tue, 26 Aug 2025 16:31:03 +0000 (18:31 +0200)]
Update Polish translation

14 months agoUpdate Japanese translation
Makoto Sakaguchi [Tue, 26 Aug 2025 12:46:19 +0000 (12:46 +0000)]
Update Japanese translation

14 months agoUpdate Polish translation
Piotr Drąg [Mon, 25 Aug 2025 15:57:52 +0000 (17:57 +0200)]
Update Polish translation